Single Responsibility Principle (SRP) হল SOLID ডিজাইন প্রিন্সিপলের প্রথমটি, যা অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং (OOP) এবং সফটওয়্যার ডিজাইন উন্নয়নের জন্য গুরুত্বপূর্ণ। SRP নির্দেশ করে যে একটি ক্লাস বা মডিউল শুধুমাত্র একটি কারণের জন্য দায়ী হওয়া উচিত। অর্থাৎ, একটি ক্লাসের শুধুমাত্র একটি দায়িত্ব বা কাজ থাকা উচিত।
SRP এর মৌলিক ধারণা
- দায়িত্বের সীমাবদ্ধতা: প্রতিটি ক্লাস বা মডিউল একক দায়িত্বের মধ্যে আবদ্ধ থাকে। যদি একটি ক্লাসে একাধিক দায়িত্ব থাকে, তবে এটি জটিলতা বাড়ায় এবং রক্ষণাবেক্ষণ এবং পরিবর্তনের সময় সমস্যা সৃষ্টি করতে পারে।
- কোডের পরিষ্কারতা: SRP অনুসরণ করলে কোড আরও পরিষ্কার ও সহজবোধ্য হয়। প্রতিটি ক্লাসের কাজ স্পষ্ট এবং নির্ধারিত থাকে।
SRP এর সুবিধা
- সহজ রক্ষণাবেক্ষণ: যখন একটি ক্লাস শুধুমাত্র একটি দায়িত্ব পালন করে, তখন তার মধ্যে পরিবর্তন করতে হলে অন্য অংশে প্রভাব ফেলবে না। এটি রক্ষণাবেক্ষণকে সহজ করে তোলে।
- টেস্টিং সহজ: একক দায়িত্বের ক্লাসগুলি সহজে পরীক্ষা করা যায়, কারণ তাদের কাজ এবং অবস্থানগুলি স্পষ্ট। এতে ইউনিট টেস্টিং করা সহজ হয়।
- নতুন কার্যকারিতা যুক্ত করা: নতুন বৈশিষ্ট্য যোগ করতে হলে একটি ক্লাসের মধ্যে খুব বেশি পরিবর্তন করতে হবে না। এটি নতুন দায়িত্বগুলিকে যুক্ত করতে সহায়ক হয়।
- কোড পুনঃব্যবহার: SRP অনুসরণ করলে ক্লাসগুলি পুনঃব্যবহারযোগ্য হয়ে ওঠে, কারণ প্রতিটি ক্লাসের একক দায়িত্বের উপর ভিত্তি করে কাজ করে।
উদাহরণ
ধরি, একটি ক্লাস Employee নিচের কাজগুলি করে:
- একটি কর্মচারীর বেতন গণনা করা।
- কর্মচারীর তথ্য একটি ফাইল থেকে পড়া এবং লিখা।
এখন এই ক্লাসটি SRP অনুসরণ করে না কারণ এতে দুটি আলাদা দায়িত্ব রয়েছে। SRP অনুসরণ করতে, আমরা নিম্নলিখিতভাবে এটি পুনর্গঠন করতে পারি:
class Employee:
def __init__(self, name, salary):
self.name = name
self.salary = salary
def calculate_pay(self):
# Calculate pay logic
return self.salary
class EmployeeFileManager:
def read_employee_data(self, file_path):
# Read employee data from file
pass
def write_employee_data(self, employee):
# Write employee data to file
pass
এখানে Employee ক্লাসটি এখন শুধুমাত্র একটি দায়িত্ব (বেতন গণনা করা) পালন করছে এবং EmployeeFileManager ক্লাসটি ফাইল পরিচালনার জন্য দায়ী।
উপসংহার
Single Responsibility Principle (SRP) একটি শক্তিশালী ডিজাইন নীতিমালা, যা সফটওয়্যার ডিজাইন এবং উন্নয়নে জটিলতা কমাতে এবং কোডের গুণমান উন্নত করতে সহায়ক। এটি ক্লাস এবং মডিউলগুলির মধ্যে দায়িত্ব স্পষ্ট করে, যা রক্ষণাবেক্ষণ এবং পরীক্ষার প্রক্রিয়াকে সহজতর করে। SRP অনুসরণ করলে, কোড আরও স্থিতিশীল এবং পরিবর্তনশীল হয়।
Read more